답안 #705973

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
705973 2023-03-05T17:38:27 Z 600Mihnea 가로등 (APIO19_street_lamps) C++17
20 / 100
5000 ms 23532 KB
#include <cmath>
#include <functional>
#include <fstream>
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <set>
#include <map>
#include <list>
#include <time.h>
#include <math.h>
#include <random>
#include <deque>
#include <queue>
#include <unordered_map>
#include <unordered_set>
#include <iomanip>
#include <cassert>
#include <bitset>
#include <sstream>
#include <chrono>
#include <cstring>
#include <numeric>

using namespace std;

typedef long long ll;

struct T
{
	int i;
	int t1;
	int t2;
};

signed main()
{
#ifdef ONPC	
	FILE* stream;
	freopen_s(&stream, "input.txt", "r", stdin);
#else
	ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#endif

	int n, q;
	string init_config;
	cin >> n >> q >> init_config;
	assert((int)init_config.size() == n);
	for (auto& ch : init_config)
	{
		assert(ch == '0' || ch == '1');
	}
	vector<T> v;
	vector<int> since(n, 0);
	string cur_config = init_config;
	vector<vector<int>> ops(q);
	for (int iq = 0; iq < q; iq++)
	{
		string s;
		cin >> s;
		assert(s == "query" || s == "toggle");
		if (s == "query")
		{
			int l, r;
			cin >> l >> r;
			l--;
			r--;
			r--;
			assert(0 <= l && l <= r && r < n);
			ops[iq] = { l, r };
		}
		else
		{
			assert(s == "toggle");
			int i;
			cin >> i;
			i--;
			assert(0 <= i && i < n);
			cur_config[i] = '0' ^ '1' ^ cur_config[i];
			if (cur_config[i] == '1')
			{
				v.push_back({ i, since[i], iq - 1 + 1 });
			}
			else
			{
				since[i] = iq + 1;
			}
			ops[iq] = { i };
		}
	}
	for (int i = 0; i < n; i++)
	{
		if (cur_config[i] == '0')
		{
			v.push_back({ i, since[i], q });
		}
	}
	for (int iq = 0; iq < q; iq++)
	{
		if ((int)ops[iq].size() == 2)
		{
			vector<int> nr(q + 1, 0);
			int l = ops[iq][0], r = ops[iq][1];
			int sol = 0;
			for (auto& it : v)
			{
				if (l <= it.i && it.i <= r)
				{
					for (int j = it.t1; j <= it.t2; j++)
					{
						nr[j]++;
					}
				}
			}
			for (int t = 0; t <= iq; t++)
			{
				sol += (nr[t] == 0);
			}
			cout << sol << "\n";
		}
	}
	return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 5069 ms 18988 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 340 KB Output is correct
2 Correct 19 ms 404 KB Output is correct
3 Correct 22 ms 340 KB Output is correct
4 Correct 1 ms 340 KB Output is correct
5 Execution timed out 5063 ms 23532 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 81 ms 372 KB Output is correct
2 Correct 61 ms 384 KB Output is correct
3 Correct 30 ms 340 KB Output is correct
4 Correct 3 ms 340 KB Output is correct
5 Execution timed out 5084 ms 21996 KB Time limit exceeded
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Execution timed out 5069 ms 18988 KB Time limit exceeded
9 Halted 0 ms 0 KB -