http://codeforces.com/contest/486/problem/A
For a positive integer n let's define a function f:
f(n) = - 1 + 2 - 3 + .. + ( - 1)nn
Your task is to calculate f(n) for a given integer n.
The single line contains the positive integer n (1 ≤ n ≤ 1015).
Print f(n) in a single line.
f(4) = - 1 + 2 - 3 + 4 = 2
f(5) = - 1 + 2 - 3 + 4 - 5 = - 3
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<string.h>
#include<string.h>
#include<algorithm>
using namespace std;
long long n;
int main ()
{
while (scanf("%I64d",&n)!=EOF)
{
if (n%2 == 0)
printf("%I64d\n",n/2);
else
printf("%I64d\n",(n/2+1)*-1);
}
return 0;
}
http://codeforces.com/contest/486/problem/B
Let's define logical OR as an operation on two logical values (i. e. values that belong to the set {0, 1}) that is equal to 1 if either or both of the logical values is set to 1, otherwise it is 0. We can define logical OR of three or more logical values in the same manner:
where is equal to 1 if some ai = 1, otherwise it is equal to 0.
Nam has a matrix A consisting of m rows and n columns. The rows are numbered from 1 to m, columns are numbered from 1 to n. Element at row i (1 ≤ i ≤ m) and column j (1 ≤ j ≤ n) is denoted as Aij. All elements of A are either 0 or 1. From matrix A, Nam creates another matrix B of the same size using formula:
.
(Bij is OR of all elements in row i and column j of matrix A)
Nam gives you matrix B and challenges you to guess matrix A. Although Nam is smart, he could probably make a mistake while calculating matrix B, since size of A can be large.
The first line contains two integer m and n (1 ≤ m, n ≤ 100), number of rows and number of columns of matrices respectively.
The next m lines each contain n integers separated by spaces describing rows of matrix B (each element of B is either 0 or 1).
In the first line, print "NO" if Nam has made a mistake when calculating B, otherwise print "YES". If the first line is "YES", then also print mrows consisting of n integers representing matrix A that can produce given matrix B. If there are several solutions print any one.
#include <iostream>
#include <algorithm>
#include <iterator>
#include <deque>
#include <vector>
#include <unordered_set>
#include <unordered_map>
#include <set>
#include <valarray>
#include <list>
#include <stack>
#include <array>
#include <iomanip>
#include <map>
#include <string>
#include <queue>
#include <sstream>
#include <iomanip>
#include <fstream>
using namespace std;
int A[100][100];
int B[100][100];
int main(int argc, char* argv[])
{
long long m, n;
cin >> m >> n;
for (size_t i = 0; i < m; ++i)
for (size_t j = 0; j < n; ++j)
A[i][j] = 1;
for (size_t i = 0; i < m; ++i)
for (size_t j = 0; j < n; ++j)
{
cin >> B[i][j];
if (B[i][j] == 0)
{
for (size_t k = 0; k < m; ++k)
A[k][j] = 0;
for (size_t k = 0; k < n; ++k)
A[i][k] = 0;
}
}
for (size_t i = 0; i < m; ++i)
for (size_t j = 0; j < n; ++j)
{
int a = 0;
for (size_t k = 0; k < m; ++k)
a |= A[k][j];
for (size_t k = 0; k < n; ++k)
a |= A[i][k];
if (a != B[i][j])
{
cout << "NO\n";
return 0;
}
}
cout << "YES\n";
for (size_t i = 0; i < m; ++i)
{
for (size_t j = 0; j < n; ++j)
cout << A[i][j] << " ";
cout << endl;
}
return 0;
}