Borderou de evaluare (job #1576918)

Utilizator margikiMargeloiu Andrei margiki Data 22 ianuarie 2016 23:08:18
Problema Constant Status done
Runda Arhiva ICPC Compilator cpp | Vezi sursa
Scor 100

Raport evaluator

Compilare: user.cpp: In function ‘int main()’: user.cpp:8:3474: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^ user.cpp:8:3516: warning: ignoring return value of ‘FILE* freopen(const char*, const char*, FILE*)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^ user.cpp:8:3557: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^ user.cpp:8:3613: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^ user.cpp:8:3641: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^ user.cpp:8:3738: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result] using namespace std; int n, q; int start[maxdim], ends[maxdim], who_ends[maxdim]; int end_after[10][maxdim], start_after[10][maxdim], start_before[10][maxdim]; int aib[10][maxdim]; int sols[maxdim]; char sir[maxdim]; vector<pair<int, pair<int, int>>> Q; inline int lsb(const int &x) { return x & -x; } inline void update(int *aib, int poz, int val) { while (poz <= n+1) { aib[poz] += val; poz += lsb(poz); } } inline int query(int *aib, int poz) { int s = 0; while (poz > 0) { s += aib[poz]; poz -= lsb(poz); } return s; } inline void solve() { sort(Q.begin(), Q.end()); vector<int> st[10]; for (int i = 1; i <= n+1; ++i) { assert((sir[i] >= '1' && sir[i] <= '9') || sir[i] == '*' || sir[i] == ')'); if (sir[i] >= '1' && sir[i] <= '9') { st[0].push_back(i); } else if (sir[i] == ')') { assert(!st[0].empty()); start[i] = st[0].back(); ends[st[0].back()] = i; who_ends[i] = sir[st[0].back()]-'0'; st[0].pop_back(); } } for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { ++start_after[sir[i]-'0'][i]; ++start_after[0][i]; ++start_before[sir[i]-'0'][i]; ++start_before[0][i]; ++end_after[sir[i]-'0'][ends[i]]; ++end_after[0][ends[i]]; update(aib[sir[i]-'0'], i, 1); update(aib[0], i, 1); } } for (int i = n+1; i >= 1; --i) { for (int j = 0; j <= 9; ++j) { start_after[j][i] += start_after[j][i+1]; end_after[j][i] += end_after[j][i+1]; } } int p = -1; for (int i = 1; i <= n+1; ++i) { if (sir[i] >= '1' && sir[i] <= '9') { st[sir[i]-'0'].push_back(ends[i]); } else if (sir[i] == ')') { assert(st[who_ends[i]].back() == i); st[who_ends[i]].pop_back(); update(aib[sir[start[i]]-'0'], start[i], -1); update(aib[0], start[i], -1); } while (p < (int) Q.size() - 1 && Q[p+1].first == i) { ++p; int x = Q[p].first, y = Q[p].second.first; int sol = numeric_limits<int>::max(); for (int d = 1; d <= 9; ++d) { int left = 0, middle, right = ((int) st[d].size()) - 1; while (left <= right) { middle = (left + right) >> 1; if (st[d][middle] >= y) { left = middle + 1; } else { right = middle - 1; } } if (right >= 0) { right = start[st[d][right]]; sol = min(sol, (end_after[0][x+1]-end_after[d][x+1]) - (start_after[0][y]-start_after[d][y]) - (query(aib[0], right)-query(aib[d], right))); } } sols[Q[p].second.second] = sol; } } for (int i = 1; i <= q; ++i) { printf("%d\n", sols[i]); } printf("\n"); } inline void cleanup() { Q.clear(); for (int j = 0; j <= 9; ++j) { for (int i = 1; i <= n+1; ++i) { start_before[j][i] = end_after[j][i] = start_after[j][i] = 0; aib[j][i] = 0; } } } int main() { freopen("constant.in", "r", stdin); freopen("constant.out", "w", stdout); int tests; scanf("%d", &tests); while (tests--) { scanf("%d %d\n", &n, &q); scanf("%s", sir+1); for (int i = 1; i <= q; ++i) { int x, y; scanf("%d %d", &x, &y); assert(0 <= x && x < y && y <= n); Q.push_back(make_pair(x+1, make_pair(y+1, i))); } solve(); cleanup(); } return 0; } ^
Test Timp executie Memorie folosita Mesaj Punctaj/test
1752ms19140kbRespect maxim!100
Punctaj total100

Ceva nu functioneaza?