9059 | 2024-02-13 14:16:21 | Qkrisi | 2016. április | cpp17 | Időlimit túllépés a 2. teszten | 2.098s | 1824 KiB |
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const pair<int, int> pairs[4] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};
set<char> PossibleMoves = {'F', 'L', 'R'};
void run(string* moves, size_t N, set<pair<ll, ll>>* endings)
{
int direction = 1;
ll X = 0;
ll Y = 0;
for(size_t i = 0;i<N;i++)
{
switch(moves->at(i))
{
case 'F':
X += pairs[direction].first;
Y += pairs[direction].second;
break;
case 'R':
if(++direction == 5)
direction = 1;
break;
case 'L':
if(--direction == 0)
direction = 4;
break;
}
}
endings->insert({X, Y});
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
string moves;
getline(cin, moves);
size_t N = moves.size();
set<pair<ll, ll>> endings;
for(size_t i = 0;i<N;i++)
{
char original = moves[i];
PossibleMoves.erase(original);
for(char c : PossibleMoves)
{
moves[i] = c;
run(&moves, N, &endings);
}
PossibleMoves.insert(original);
moves[i] = original;
}
cout << endings.size();
return 0;
}
3
Elvárt kimenet:3
Ellenőrző kimenete:ok 1 number(s): "3"
Elvárt kimenet:34389
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete:
Elvárt kimenet:
Ellenőrző kimenete: