#include <vector>
#include <list>
#include <map>
#include <set>
#include <unordered_map>
#include <unordered_set>
#include <deque>
#include <stack>
#include <bitset>
#include <algorithm>
#include <functional>
#include <numeric>
#include <utility>
#include <sstream>
#include <iomanip>
#include <cstdio>
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <string>
#define FOR(i,a,b) for(int i=(a);i<(b);++i)
#define FORD(i,a,b) for(int i=(a);i>=(b);--i)
#define REP(i,a) FOR(i,0,a)
#define MP make_pair
#define PB push_back
#define ST first
#define ND second
using namespace std;
typedef vector<int> VI;
typedef vector<VI> VVI;
typedef pair<int, int> PII;
typedef vector<PII> VII;
typedef long long int LL;
typedef unsigned long long int ULL;
const int MAXN = 100005;
const int MAXK = 5;
int n, k;
LL a[MAXK][MAXN];
LL res[MAXN];
int main() {
scanf("%d %d", &n, &k);
//k = 2;
REP (i, k) {
REP (j, n) {
scanf("%lld", &a[i][j]);
}
}
if (k > 2) {
printf("We no speak Americano");
return 0;
}
if (k == 2) {
LL dist = 0, diff = 0;
REP (i, n) {
dist += abs(a[0][i]-a[1][i]);
}
REP (i, n) {
if (diff >= dist / 2) {
res[i] = a[0][i];
}
else if (diff + abs(a[0][i]-a[1][i]) >= dist / 2) {
if (a[0][i] < a[1][i]) {
res[i] = a[0][i] + (dist / 2 - diff);
}
else {
res[i] = a[0][i] - (dist / 2 - diff);
}
}
else {
res[i] = a[1][i];
}
diff += abs(a[0][i]-a[1][i]);
}
}
/*LL dbg = 0, tmp = 0;
REP (j, k) {
tmp = 0;*/
REP (i, n) {
printf("%lld ", res[i]);
// tmp += abs(a[j][i]-res[i]);
}
// dbg = max(dbg, tmp);
//}
//printf("%lld", dbg);
printf("\n");
return 0;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | #include <vector> #include <list> #include <map> #include <set> #include <unordered_map> #include <unordered_set> #include <deque> #include <stack> #include <bitset> #include <algorithm> #include <functional> #include <numeric> #include <utility> #include <sstream> #include <iomanip> #include <cstdio> #include <cmath> #include <cstdlib> #include <ctime> #include <iostream> #include <string> #define FOR(i,a,b) for(int i=(a);i<(b);++i) #define FORD(i,a,b) for(int i=(a);i>=(b);--i) #define REP(i,a) FOR(i,0,a) #define MP make_pair #define PB push_back #define ST first #define ND second using namespace std; typedef vector<int> VI; typedef vector<VI> VVI; typedef pair<int, int> PII; typedef vector<PII> VII; typedef long long int LL; typedef unsigned long long int ULL; const int MAXN = 100005; const int MAXK = 5; int n, k; LL a[MAXK][MAXN]; LL res[MAXN]; int main() { scanf("%d %d", &n, &k); //k = 2; REP (i, k) { REP (j, n) { scanf("%lld", &a[i][j]); } } if (k > 2) { printf("We no speak Americano"); return 0; } if (k == 2) { LL dist = 0, diff = 0; REP (i, n) { dist += abs(a[0][i]-a[1][i]); } REP (i, n) { if (diff >= dist / 2) { res[i] = a[0][i]; } else if (diff + abs(a[0][i]-a[1][i]) >= dist / 2) { if (a[0][i] < a[1][i]) { res[i] = a[0][i] + (dist / 2 - diff); } else { res[i] = a[0][i] - (dist / 2 - diff); } } else { res[i] = a[1][i]; } diff += abs(a[0][i]-a[1][i]); } } /*LL dbg = 0, tmp = 0; REP (j, k) { tmp = 0;*/ REP (i, n) { printf("%lld ", res[i]); // tmp += abs(a[j][i]-res[i]); } // dbg = max(dbg, tmp); //} //printf("%lld", dbg); printf("\n"); return 0; } |
English